<?php
/**
 * Tydny Controller for Ohlasky Component
 * @license		GNU/GPL
 */

// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

/**
 * Ohlasky Tydny Controller
 */
class OhlaskysControllerTydny extends OhlaskysController {
/**
 * constructor (registers additional tasks to methods)
 * @return void
 */
    function __construct() {
        parent::__construct();

    // Register Extra tasks
    //$this->registerTask( 'add'  , 	'edit' );
    }

    /**
     * display the edit form
     * @return void
     */
    function add() {
        $je_aspon_jedno_akt_misto = $this->jsou_aktivni_mista();
        if ($je_aspon_jedno_akt_misto) {
            JRequest::setVar( 'view', 'tydny' );
            JRequest::setVar( 'layout', 'form'  );
            JRequest::setVar('hidemainmenu', 1);

            parent::display();

        } else {
            $msg = JText::_( 'Musíte zadat alespoň jedno aktivní místo!' );
            $link = 'index.php?option=com_ohlasky&view=mistas';
            $this->setRedirect($link, $msg);
        }

    }


    function edit() {
    //$je_aspon_jedno_akt_misto = $this->jsou_aktivni_mista();
        JRequest::setVar( 'view', 'tydny' );
        JRequest::setVar( 'layout', 'form'  );
        JRequest::setVar('hidemainmenu', 1);

        parent::display();

    }



    function show() {
        JRequest::setVar( 'view', 'tydnys' );
        JRequest::setVar( 'layout', 'default' );
        //JRequest::setVar('hidemainmenu', 1);
        parent::display();
    }


    /**
     * save a record (and redirect to main page)
     * @return void
     */
    function save() {
        $chyba = '';
        $model = $this->getModel('tydny');
        $_data = $model->getData();
        $id = $_data->id;
        $je_to_novy_tyden_bool = false;
        $stejnyTydenOk_bool = true;
        $ode_dne = $_data->ode_dne;
        if (empty($id)) {
            $je_to_novy_tyden_bool = true;
            $stejnyTydenOk_bool = $model->neniStejnehoData($ode_dne);
        } else {
        //musime overit, zda jiz nebyl
        //ulozen tyden stejneho data ode_dne
            $stejnyTydenOk_bool = $model->neniStejnehoData($ode_dne, $id);
        }
        if ($stejnyTydenOk_bool) {
            if ($model->store($post)) {
                $msg = JText::_( 'Týden byl uložen!' );
                if ($je_to_novy_tyden_bool) {
                    $id = $model->getNejvyssiId();
                } else {
                    $id = $_data->id;
                }
                $link = 'index.php?option=com_ohlasky&view=ohlasky_tydne&tyden_id='.$id;
                if ($je_to_novy_tyden_bool) {
                //zjistime, zda byla vybrana sablona
                //pokud ano, vygenerujeme z ni
                //ohlasky
                    $ode_dne_str = $_data->ode_dne;
                    $id_nove = $model->getNejvyssiId();;
                    $model->generujOhlaskyZeSab($ode_dne_str, $id_nove);
                }
                $this->setRedirect($link, $msg);
            } else {
                $chyba = $model->getError();
                if (!empty($chyba)) {
                    if (stristr( $chyba, 'duplicate')) {
                        $msg = JText::_( 'Týden začínající stejným datumem již je uložen v databázi!' );
                    } else {
                        $msg = JText::_( 'Došlo k chybě při pokusu o uložení týdne!' );
                    }
                } else {
                    $msg = JText::_( 'Chyba při uložení týdne!' );
                }
                $link = 'index.php?option=com_ohlasky';
                $this->setRedirect($link, $msg, 'error');
            }
        } else {
        //presmerujeme na view tydny
            $msg = JText::_( 'Klikněte na týden, který chcete editovat' );
            $link = 'index.php?option=com_ohlasky';
            $this->setRedirect($link, $msg);
        }
    }

    /**
     * remove record(s)
     * @return void
     */
    function remove() {
    //		$model = $this->getModel('tydny');
    //		if(!$model->delete()) {
    //			$msg = JText::_( 'Chyba: Jedna nebo více událostí nemohly být uloženy!' );
    //		} else {
    //			$msg = JText::_( 'Událost byla vymazána' );
    //		}

        $msg = 'Týden nelze vymazat, pouze editovat!';
        $this->setRedirect( 'index.php?option=com_ohlasky', $msg, 'error' );
    }

    /**
     * cancel editing a record
     * @return void
     */
    function cancel() {
        $msg = JText::_( 'Operace byla zrušena' );
        $this->setRedirect( 'index.php?option=com_ohlasky', $msg );
    }

    //vraci true/false, podle toho,
    //zda existuje aspon jedno
    //aktivni misto
    function jsou_aktivni_mista() {
        $jsou_aktivni_mista_bool = false;
        $model = $this->getModel('ohlasky_tydne');
        $mista_obj_list = $model->getAktivni_mista();
        if (is_array($mista_obj_list)) {
            $pocet_mist = count($mista_obj_list);
            if ($pocet_mist > 0) {
                $jsou_aktivni_mista_bool = true;
            }
        }
        return $jsou_aktivni_mista_bool;
    }

}

